在寫類別的時候,
常會遇到@(實體變數)
和@@(類別變數)
兩者之間有何差別呢?
存在實體裡的變數,
因此獨立在各個實體裡面,
不會影響到別的實體變數。
class Cat
def initialize
@amount = 0
@amount += 1
end
def how_many_cats
puts "有 #{@amount} 隻貓"
end
end
kitty = Cat.new
kk = Cat.new
kitty.how_many_cats #有 1 隻貓
kk.how_many_cats #有 1 隻貓
存在類別裡的變數,
會影響到同一類別內的實體變數。
class Cat
@@amount = 0
def initialize
@@amount += 1
end
def how_many_cats
puts "有 #{@@amount} 隻貓"
end
end
kitty = Cat.new
kk = Cat.new
kitty.how_many_cats #有 2 隻貓
kk.how_many_cats #有 2 隻貓
Ruby
實體變數
類別變數